
class BootStrap {

    def init = { servletContext ->
        
        if (!tv_megazineplus.SecretQuestion.count()) {
            new tv_megazineplus.SecretQuestion(question: "Favourite Book").save(failOnError: true)
            new tv_megazineplus.SecretQuestion(question: "Favourite Color").save(failOnError: true)
            new tv_megazineplus.SecretQuestion(question: "Favourite ?").save(failOnError: true)
        }
        
        if (!tv_megazineplus.Servicos.count()) {
            new tv_megazineplus.Servicos(name: 'Serviço de Alertas - SMS', description: 'Envio de alertas via SMS - Uso interno').save()
            new tv_megazineplus.Servicos(name: 'Serviço de Alertas - EMAIL', description: 'Envio de alertas via EMAIL - uso interno').save()
            new tv_megazineplus.Servicos(name: 'getChannelListJSON', description: 'Recupera a lista de canais disponíveis. Em formato JSON').save()
            new tv_megazineplus.Servicos(name: 'getChannelListXML', description: 'Recupera a lista de canais disponíveis. Em formato XML').save()
            new tv_megazineplus.Servicos(name: 'getProgrammsList', description: 'Recupera a lista de programas para as próximas 24h de um canal(channelID). O formato do retorno é definido pela propriedade HTTP, Accept e pode ser application/json ou application/xml').save()
            new tv_megazineplus.Servicos(name: 'getTokenToAlert', description: 'Cria um token de acesso para a utilização do serviço criação de Alertas. O token é criado e enviado para o email/sms do usuários e tem validade de 30 minutos. É necessário informar o email do usuário(userEmail), e por default ele envia via sms').save()
            new tv_megazineplus.Servicos(name: 'createAlert', description: 'Cria um alerta que será enviado para o usuário, avisando sobre um programa que vai começar. É necessário ter id do programa e token. E informar o tipo(sms/email), quanto tempo antes do inicio do programa e uma mensagem pessoal que sera enviada junto.').save()
            new tv_megazineplus.Servicos(name: 'getStatsJSON', description: 'Interface Definida durante a aula, recebe: begin,end(ambos datas) e retorna em JSON').save()
            new tv_megazineplus.Servicos(name: 'getStatsXML', description: 'Interface Definida durante a aula, recebe: begin,end(ambos datas) e retorna em XML').save()
            new tv_megazineplus.Servicos(name: 'getUserStatsJSON', description: 'Mostra informações de atividade de um usuario(informado pelo email) em um período de tempo. Retorna JSON').save()
            new tv_megazineplus.Servicos(name: 'getUserStatsXML', description: 'Mostra informações de atividade de um usuario(informado pelo email) em um período de tempo. Retorna XML').save()
        }
        
        if(!tv_megazineplus.Users.count()){
            def ha = 'lalala'.encodeAsMD5()
            def pw = '123321'.encodeAsMD5()
            def sq = tv_megazineplus.SecretQuestion.findByQuestion("Favourite Book")
            
            def user = new tv_megazineplus.Users(fbtoken: 'AAAB3fVX4nkABAOD70EVanjPZBfVQ5kZBI1ZAfDX9iHVMIib78UJa25CIlVpgcpSbfVGqzlc9sS5xNM3I9fZBQCFk4dKQkJG6cgAZCKyZAAFwZDZD', name: 'João Magalhães', username: 'catalist', hashPassword: pw, phoneNumber: '918316195', email: 'joao.magalhaes@ua.pt',
                secretQuestion: sq, hashAnswer: ha).save(failOnError: true)

            new tv_megazineplus.UserPrefs(emailVerified: true, phoneVerified: true, postMural: true, user: user).save()            
            
        }

    }
    def destroy = {
    }
}
